/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cda.pager;

import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 *
 * @author Shyzkanza
 */
class MyPagerAdapter extends PagerAdapter {
    
    public static String                TYPE = "EAN_13";
    public static String                DONNEES = "1111111111141";
    public static int                   MAJ_LISTE_CARTE = 1;
    
    private ListView                    listeFidelite;
    
    private List<String[]>              listeFideliteReel;
    
    private static Handler              handler;
    
    // Base de donnee des cartes de fidelite
    public static ClientBDDFidelite     CBDDF;
    
    private RelativeLayout              layout;
    
    // Liste des items des cartes defidelite
    ArrayList<HashMap<String, String>>  listItem;
    HashMap<String, String>             map;
    
    
    
    public int getCount() {
        return 2;
    }

    @Override
    public Object instantiateItem(View collection, int position) {
        
        CBDDF = new ClientBDDFidelite();

        View view = null;
        
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch(msg.what){
                    case 1 :
                        MAJListeFidelite();
                        Toast.makeText(Pager.getContext(), "test", Toast.LENGTH_SHORT).show();
                        break;
                } 
            }
        };
        
        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        int resId = 0;
        switch (position) {     
            case 0:
                resId = R.layout.first;
                view = inflater.inflate(resId, null);
                layout = (RelativeLayout)view.findViewById(R.id.first);
                ((ViewPager) collection).addView(view, 0);
                break;

            case 1:
                resId = R.layout.second;
                view = inflater.inflate(resId, null);
                layout = (RelativeLayout)view.findViewById(R.id.second);
                initFidelite();
                ((ViewPager) collection).addView(view, 0);
                break;
                         
        }
        return view; 
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);

    }


    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);

    }

    @Override
    public Parcelable saveState() {
        return null;
    }
    
    @Override
    public CharSequence getPageTitle (int position) {
        CharSequence retour = "";
        
        switch(position){
            case 0:
                retour = "Memo vente";
                break;
            case 1:
                retour = "Carte de fidelite";
                break;
        }
        
        return retour;
    }
    
    /***********************************************************************************************************
     * 
     * Gestion des cartes de fidelite
     * 
     * 
     ***********************************************************************************************************
     */
    
    private void initFidelite(){
        
        //Récupération de la listview créée dans le fichier main.xml
        listeFidelite = (ListView) layout.findViewById(R.id.listefidelite);
 
        //Création de la ArrayList qui nous permettra de remplire la listView
        listItem = new ArrayList<HashMap<String, String>>();
 
        //On déclare la HashMap qui contiendra les informations pour un item
        HashMap<String, String> map;
        
        listeFidelite = (ListView)layout.findViewById(R.id.listefidelite);
        
        MAJListeFidelite();
        
        listeFidelite.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                
                HashMap<String, String> temp = (HashMap<String, String>) parent.getItemAtPosition(position);
                
                String select = temp.get("titre");
                
                if (select.equals("Ajouter...")) {
                    Pager.startAct(Pager.CREER_CARTE);
                }else{
                    TYPE = listeFideliteReel.get(position)[2];
                    DONNEES = listeFideliteReel.get(position)[3];
                    Pager.startAct(Pager.AFFICHE_CODE);
                } 
            }
        });
    }
    
    public static void MAJListeFideliteStatic(){
        Message msg = new Message();
        msg.what = MAJ_LISTE_CARTE;
        handler.sendMessage(msg);
    }
    
    private void MAJListeFidelite(){
        
        listItem.clear();
        
        listeFideliteReel = CBDDF.getListeCarte();
        
        for (int i = 0; i < listeFideliteReel.size(); i++) {
            //Création d'une HashMap pour insérer les informations du premier item de notre listView
            map = new HashMap<String, String>();
            //on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml
            map.put("titre", listeFideliteReel.get(i)[1]);
            //on insère un élément description que l'on récupérera dans le textView description créé dans le fichier affichageitem.xml
            map.put("description", listeFideliteReel.get(i)[4]);
            //enfin on ajoute cette hashMap dans la arrayList
            listItem.add(map);
        }
        
        //Création d'une HashMap pour insérer les informations du premier item de notre listView
        map = new HashMap<String, String>();
        //on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml
        map.put("titre", "Ajouter...");
        //on insère un élément description que l'on récupérera dans le textView description créé dans le fichier affichageitem.xml
        map.put("description", "Ajouter une carte");
        //enfin on ajoute cette hashMap dans la arrayList
        listItem.add(map);
        
        //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
        SimpleAdapter mSchedule = new SimpleAdapter (Pager.getContext(), listItem, R.layout.itemlistefidelite,
               new String[] {"titre", "description"}, new int[] {R.id.titre, R.id.description});
 
        //On attribut à notre listView l'adapter que l'on vient de créer
        listeFidelite.setAdapter(mSchedule);
        mSchedule.notifyDataSetChanged();
    }
}
